﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Negocio;
using Modelo;

namespace Interfaces
{
    /// <summary>
    /// Interaction logic for IUListaCompras.xaml
    /// </summary>
    public partial class IUListaCompras : Window
    {
        List<Producto> productos;
        List<ProductoDiario> productosDiarios;
        DateTime Fecha;
        public IUListaCompras()
        {
            InitializeComponent();
            GenerarLista();
            ControladorProductoDiario.BorrarProductosAnterioresAHoy();
        }
        public IUListaCompras(DateTime fecha)
        {
            Fecha = fecha;
             InitializeComponent();
            GenerarListaDiaria();
        }

        private void GenerarListaDiaria()
        {
            productosDiarios = ControladorProductoDiario.ObtenerProductosFecha(Fecha);
            productos = new List<Producto>();
            if (productosDiarios != null)
            {
                Producto productoSemanal = new Producto();
                foreach (ProductoDiario productoDiario in productosDiarios)
                {
                    productoSemanal = productoDiario;
                    productos.Add(productoSemanal);
                }
                MostrarDiaria();
            }
                
        }

        private void MostrarDiaria()
        {
            foreach (ProductoDiario productoDiario in productosDiarios)
            {
                listBoxProductos.Items.Add(productoDiario.Nombre+" "+productoDiario.Cantidad+productoDiario.Medida+"  Bs. "+productoDiario.Precio+"Necesario para: "+productoDiario.FechaComida);
            }
        }

        
        private void GenerarLista()
        {
            productos = ControladorProducto.ProductosParaSemana();
            if(productos!=null)
                Mostrar();
        }
        private void Mostrar()
        {
            foreach (Producto producto in productos)
            {
                listBoxProductos.Items.Add(producto.Nombre + " " + producto.Cantidad + producto.Medida + " " + "Bs. " + producto.Precio);
            }
        }
        private void listBoxProductos_KeyDown(object sender, KeyEventArgs e)
        {
            
        }

        private void listBoxProductos_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            int indice = listBoxProductos.SelectedIndex;
            if (indice != -1)
            {
                IUModificarCantidad modificar = new IUModificarCantidad(productos[indice]);
                modificar.ShowDialog();
                listBoxProductos.Items.Clear();
                Mostrar();
            }
        }

        private void buttonImprimir_Click(object sender, RoutedEventArgs e)
        {
            GenerarListaAImprimir();
            ControladorImpresion.Imprimir();
        }
        

        private void GenerarListaAImprimir()
        {
            ControladorImpresion.listaAImprimir.Add("Lista de compras: " + DateTime.Now);
            ControladorImpresion.listaAImprimir.Add(" ");
            foreach (string producto in listBoxProductos.Items)
            {
                ControladorImpresion.listaAImprimir.Add(producto);
            }
        }

        private void listBoxProductos_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

        }

        private void buttonAgregarListaDiaria_Click(object sender, RoutedEventArgs e)
        {

            int indice = listBoxProductos.SelectedIndex;
            if (indice >= 0)
            {
                IUAgregarListaDiaria agregar = new IUAgregarListaDiaria(productos[indice].Nombre, productos[indice].Cantidad,productos[indice].Precio,productos[indice].Medida);
                agregar.ShowDialog();
                listBoxProductos.Items.Clear();
                GenerarLista();
            }
            

        }
    }
}
